<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body></body>
</html>

<script>
  function error() {
    /* 
    一：常见的内置错误
      1：ReferenceError 引用的变量不存在
        console.log(a) => ReferenceError: a is not defined
        console.log('-----') => 没有捕获error，下面的代码不会执行

      2：TypeError 数据类型不正确的错误
        let b
        b.x => 2：TypeError: Cannot read property 'x' of undefined

      3：RangeError 数据值不在其所在允许的范围内
        function fn () {
          fn()
        }
        fn() => RangeError: Maximum call stack size exceeded 超出最大调用栈

      4：SyntaxError 语法错误
        const a = ""a"" => SyntaxError: Unexpected string
    
    二：错误处理
      1：捕获错误 try ... catch
        try {
          let a;
          console.log(a.xxx)
        } catch (e) {
          console.log(e.message, e.stack)
        }
      2：抛出错误 throw error
        function fn(){
          if(Date.now() % 2 === 1){
            console.log('当前时间为奇数，可以执行任务')
          } else {
            throw new Error
          }
        }
      3：错误对象
        message属性：错误相关信息
        stack属性：函数调用栈记录信息
    */
  }
</script>
